package cn.bdqn.controller.sys;

import cn.bdqn.entity.SysRole;
import cn.bdqn.entity.SysUser;
import cn.bdqn.service.sys.SysJournalService;
import cn.bdqn.service.sys.SysRoleService;
import cn.bdqn.service.sys.UserService;
import cn.bdqn.utils.MyLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;
import java.util.Map;

/**
 * @ProjectName: ycbdqn
 * @Package: cn.bdqn.controller.sys
 * @Author: huat
 * @Date: 2020/3/6 23:05
 * @Version: 1.0
 */
@Controller
@RequestMapping("/sys/admin")
public class AdminController {
    @Autowired
    UserService userService;
    @Autowired
    SysRoleService sysRoleService;
    @Autowired
    SysJournalService sysJournalService;
    /**
     * 进入用户页面
     * @return
     */
    @RequestMapping("intoUser")
    public String intoUser(){
        return "admin/user";
    }

    /**
     * 进入日志页面
     * @return
     */
    @RequestMapping("intoJournal")
    public String intoJournal(){
        return "admin/journal";
    }

    /**
     * 分页查询用户
     * @param page 起始位置
     * @param limit 页面大小
     * @param username 用户名
     * @return
     */
    @RequestMapping("getAllUser")
    @ResponseBody
    @MyLog("获取用户列表")
    public Map<String,Object> getAllUser(Integer page, Integer limit,String username){
        System.out.println(username);
        if(null==page){
            page=1;
        }
        if(null==limit){
            limit=5;
        }
        return userService.getAllUser(page,limit,username);
    }

    /**
     * 跳转进入添加用户页面
     * @return
     */
    @RequestMapping("intoAddUser")
    public String intoAddUser(){
        return "admin/addUser";
    }

    /**
     * 获取所有角色信息
     * @return
     */
    @RequestMapping("getAllRole")
    @ResponseBody
    @MyLog("获取角色信息")
    public List<SysRole> getAllRole(){
        return sysRoleService.getAllRole();
    }

    /**
     * 添加用户
     * @param sysUser 用户
     * @param roleId 用户角色id
     * @return
     */
    @PostMapping("addUser")
    @ResponseBody
    @MyLog("添加用户")
    public int addUser(SysUser sysUser, String[] roleId){

        return userService.addUser(sysUser, roleId);
    }

    /**
     * 根据id查询用户
     * @param id 用户id
     * @return 用户对象
     */
    @GetMapping("intoUpdateUser")
    @MyLog("查询用户")
    public String addUser(int  id, Model model){
        model.addAttribute("updateUser",userService.getSysUser(id));
        return "admin/updateUser";
    }

    /**
     * 查询用户角色及所有角色
     * @param id
     * @return
     */
    @PostMapping("getUserByUpdate")
    @ResponseBody
    public Map<String,Object> getUserByUpdate(int id){

        return sysRoleService.getUserRoleId(id);
    }

    /**
     * 修改用户信息
     * @param sysUser 用户对象
     * @param roleId    角色id
     * @return
     */
    @RequestMapping("updateUserByAdmin")
    @ResponseBody
    @MyLog("修改用户信息")
    public boolean updateUserByAdmin(SysUser sysUser, String[] roleId){
        return userService.updateUserByAdmin(sysUser, roleId);
    }

    /**
     * 通过用户id删除用户
     * @param id 用户id
     * @return
     */
    @PostMapping("deleteUser")
    @ResponseBody
    @MyLog("删除用户")
    public boolean deleteUserById(int id){

        return userService.deleteUserById(id);
    }

    /**
     * 查看日志
     * @param page 起始位置
     * @param limit 页面大小
     * @param username 操作用户名
     * @param operation 操作
     * @return
     */
    @RequestMapping("getAllJournal")
    @ResponseBody
    public Map<String,Object> getAllJournal(Integer page,Integer limit,String username,String operation){
        return sysJournalService.getJournal(page, limit, username, operation);
    }
}
